The use of distributed computing systems, e.g., “cloud computing,” has become increasingly common for consumers and enterprises, especially for data storage. This so-called “cloud data storage” employs large numbers of networked storage servers that are organized as a unified repository for data, and are configured as banks or arrays of magnetic hard disk drives (HDDs) and/or solid-state drives (SSDs). Typically, these servers are arranged in high-density configurations to facilitate such large-scale operation. For example, a single cloud data storage system may include thousands or tens of thousands of storage servers installed in stacked or rack-mounted arrays.
Nonvolatile random-access memory (NVRAM) may be employed to reduce latency in such distributed computing systems, since NVRAM can serve as a smaller but much faster storage device than the HDDs and solid-state drives (SSDs) typically included in cloud data storage systems. Unlike conventional dynamic random-access memory (DRAM) and static random-access memory (SRAM), which both maintain data only for as long as power is applied, NVRAM is random-access memory that retains data when power is turned off (non-volatile). Various types of NVRAM are currently being developed, including NOR flash memory, ferroelectric RAM (F-RAM or Fe-RAM), magnetoresistive RAM (MRAM), and phase-change RAM (PRAM), among others.
As noted, RAM write operations to such NVRAM devices are typically performed one or more orders of magnitude faster than HDD random write operations, while the data included in the write operation are still considered to be safely stored in a nonvolatile medium. Consequently, when receiving a write or PUT command from a client or host, a storage device that includes NVRAM can return an acknowledgement to the client or host indicating that the write or PUT command is complete as soon as the data associated with the command is stored in the NVRAM. Thus, the acknowledgement is returned much more quickly than from a storage device that does not include NVRAM, which must wait until the data associated with the write or PUT command has been written to a magnetic disk.
However, the use of NVRAM has a potential drawback. Specifically, if an unexpected power loss, reboot, or process crash event occurs while a program is updating a data structure, the partial update can leave the data structure in an inconsistent state leading to unpredictable consequences.